package 大数据应用赛_2020

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.types.IntegerType

object Exam2 {

  def main(args: Array[String]): Unit = {
    // 创建环境
    val conf = new SparkConf()
      .setAppName("log_analysis")
      .setMaster("local[6]")
    val sc = new SparkContext(conf)
    // 设置日志级别
    sc.setLogLevel("ERROR")

    val spark = SparkSession.builder().appName("exam_1").master("local[6]").getOrCreate()
    import org.apache.spark.sql.functions._
    import spark.implicits._
    // 读取数据
    val data = spark.read
      .option("header", "true")
      .csv("hdfs://192.168.64.178:9000/spark/clean/part-00000-9d953483-12c7-455f-998e-196b54d339a1-c000.csv")
        //.csv("C:\\Users\\35192\\Desktop\\full_data")
    data.show()
    data.printSchema()

    // 2、分析不同城市 薪资概况（工资的最小平均值，最大平均值）
    // 返回结果包含 城市名称，薪资最小平均值avg（min_salry），最大平均值avg（max_salry）
    val data_use = data.select('city, 'min_salary cast (IntegerType), 'max_salary cast (IntegerType))
      .toDF()
    data_use.printSchema()

    val result = data_use.select('city, 'min_salary, 'max_salary)
      .groupBy('city)
      .agg(avg('min_salary), avg('max_salary))
    result.show()

//    result.coalesce(1) // 设置分区为1
//      .write.mode("overwrite")
//      .option("header","true")
//      .csv("G:\\Projects\\IdeaProjects\\Spark_Competition\\src\\main\\scala\\大数据应用赛_2020\\exam02_1")
  }
}
